Fix an ordering issue in event destruction
authorMatthias Clasen <mclasen@redhat.com>
Sat, 1 Nov 2014 18:44:03 +0000 (14:44 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 1 Nov 2014 18:44:03 +0000 (14:44 -0400)
gdk_event_get_display accesses event->any.window, so don't
free that window first thing.

gdk/gdkevents.c

index 89cc5a28d8215582d8361937e611c2c9745bf27e..3d8d7bc2902f4885a99bc1fcaeb5c1571175a3a2 100644 (file)
@@ -740,9 +740,6 @@ gdk_event_free (GdkEvent *event)
 
   g_return_if_fail (event != NULL);
 
-  if (event->any.window)
-    g_object_unref (event->any.window);
-  
   switch (event->any.type)
     {
     case GDK_KEY_PRESS:
@@ -814,6 +811,9 @@ gdk_event_free (GdkEvent *event)
   if (display)
     _gdk_display_event_data_free (display, event);
 
+  if (event->any.window)
+    g_object_unref (event->any.window);
+
   g_hash_table_remove (event_hash, event);
   g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event);
 }